package com.ysd.service.util;

import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName ObjUtil
 * @Description TODO
 * @Author liuzhichao
 * @Date 2021/9/10 17:44
 * @Version 1.0
 */
public class ObjUtil {
    /**
     * 判断一个obj 与 一个int数值是否相等
     * @param obj
     * @param num
     * @return
     */
    public static boolean equalsNum(Object obj,int num){
        if(null != obj){
            String s = obj.toString();
            if(!"".equals(s) && num == Integer.parseInt(s)){
                return true;
            }
        }
        return false;
    }

    /**
     * 判断一个 String obj 不为空
     * @param obj
     * @return
     */
    public static boolean notEmpty(Object obj){
        return !isEmpty(obj);
    }

    /**
     * 判断一个 String obj 为空
     * @param obj
     * @return
     */
    public static boolean isEmpty(Object obj){
        return null == obj || 0 == obj.toString().length();
    }

    /**
     * 对象转为Int
     */
    public static Integer objToInt(Object obj){
        if (null == obj) {
            return null;
        }
        if("null".equals(obj.toString().trim())){
            return null;
        }
        if (!isNum(obj.toString().trim())){
            return null;
        }
        return Integer.parseInt(obj.toString().trim());
    }

    /**
     * 对象转为Long
     */
    public static long objToLong(Object obj){
        if (null == obj) {
            return -100;
        }
        if("null".equals(obj.toString().trim())){
            return -100;
        }
        if (!isNum(obj.toString().trim())){
            return -100;
        }
        return Long.parseLong(obj.toString().trim());
    }
    /**
     * 对象转为Float
     */
    public static float objToFloat(Object obj){
        if (null == obj) {
            return 0;
        }
        if("null".equals(obj.toString().trim())){
            return 0;
        }
        if (!isNum(obj.toString().trim())){
            return 0;
        }
        return Float.parseFloat(obj.toString().trim());
    }

    /**
     * 对象为空，返回空字符串
     */
    public static String objToStr(Object obj){
        if (null == obj) {
            return "";
        }
        if("null".equals(obj.toString().trim())){
            return "";
        }
        return obj.toString().trim();
    }

    public static boolean isNum(String str) {
        if (StringUtils.isEmpty(str)) {
            return false;
        }
        return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
    }

    public static List<Map<String, Object>> convertStringToListMap(String input) {
        List<Map<String, Object>> list = new ArrayList<>();
        // 移除首尾的中括号
        input = input.substring(1, input.length() - 1).trim();

        // 分割字符串以获取每个映射
        String[] mapStrings = input.split("\\}, \\{");
        for (String mapString : mapStrings) {
            // 移除可能存在的前后大括号
            mapString = mapString.replaceAll("[\\{\\}]", "").trim();
            // 创建一个新的映射
            Map<String, Object> map = new HashMap<>();
            // 分割键值对
            String[] entries = mapString.split(", ");
            for (String entry : entries) {
                String[] keyValue = entry.split("=");
                String key = keyValue[0].trim();
                String value = keyValue[1].trim();
                // 假设 "enabled" 的值是布尔类型
                if ("true".equals(value) || "false".equals(value)) {
                    map.put(key, Boolean.parseBoolean(value));
                } else {
                    // 其他情况作为字符串处理
                    map.put(key, value);
                }
            }
            list.add(map);
        }
        return list;
    }

}
